﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WebSysCore.JSons;

namespace WebSysCore.Helpers
{
    public class ValidateHelp
    {
        public static bool ValidateCustomer(Customer jc, out string error)
        {
            error = "";
            bool ok = true;
            if (jc.CustomerName.Trim().Length == 0)
            {
                error += "tên khách hàng phải có độ dài > 1 ký tự, ";
                ok = false;
            }
            if (jc.CustomerAddress.Trim().Length == 0)
            {
                error += "vui lòng điền địa chỉ của cơ quan quí vị, ";
                ok = false;
            }
            List<Province> lstProvince = DataBase.GetAllProvince();
            var query = from q in lstProvince
                        where q.ProvinceId == jc.CustomerProvinceId
                        select q;
            if (query.Count() <= 0)
            {
                error += "tỉnh lựa chọn không tồn tại trong CSDL, ";
                ok = false;
            }
            if (jc.CustomerDistrictOrCity.Trim().Length == 0)
            {
                error += "chưa điền thông tin huyện-thị xã-thành phố, ";
                ok = false;
            }
            float t;
            try
            {
                t = float.Parse(jc.CustomerPhone.Trim());
            }
            catch
            {
                error += "số điện thoại cơ quan không đúng, ";
                ok = false;
            }
            if (jc.ContactPhone.Trim().Length > 0)
            {
                try
                {
                    t = float.Parse(jc.ContactPhone.Trim());
                }
                catch
                {
                    error += "số điện thoại người liên hệ không đúng, ";
                    ok = false;
                }
            }
            if (jc.LoginName.Trim().Length == 0)
            {
                error += "tên đăng nhập không được rỗng, ";
                ok = false;
            }
            if (jc.LoginName.Length > 0)
            {
                if (!char.IsLetter(jc.LoginName[0]))
                {
                    error += "tên đăng nhập phải được bắt đầu bởi một chữ cái, ";
                    ok = false;
                }
            }
            foreach (char c in jc.LoginName)
            {
                if (!char.IsLetterOrDigit(c))
                {
                    error += "tên đăng nhập chỉ bao gồm chữ cái và chữ số, ";
                    ok = false;
                    break;
                }
            }
            if (jc.Password.Length < 6)
            {
                error += "mật khẩu phải có độ dài từ 6 kí tự trở lên, ";
                ok = false;
            }
            return ok;
        }
        public static bool ValidateSchedule(JListSchedule jls, out string error)
        {
            bool ok = true;
            error = "";
            if (jls.ScheduleName.Trim().Length == 0)
            {
                ok = false;
                error += "Tên thời khóa biểu rỗng.";
            }
            return ok;
        }

        public static bool ValidateDay(JDay jd, out string error)
        {
            bool ok = true;
            error = "";
            if (jd.DayName.Trim().Length == 0)
            {
                error += "Tên ngày chưa đúng.";
                ok = false;
            }
            return ok;
        }

        public static bool ValidateSubject(JSubject js, out string err)
        {
            //   throw new NotImplementedException();
            bool ok = true;
            err = "";
            if (js.SubjectName.Trim().Length == 0)
            {
                err += "Tên môn chưa đúng, ";
                ok = false;
            }
            return ok;

        }

        public static bool ValidateSession(JSession js, out string err)
        {
            //throw new NotImplementedException();
            bool ok = true;
            err = "";
            if (js.SessionName.Trim().Length == 0)
            {
                ok = false;
                err = "Bạn chưa nhập tên buổi học.";
            }
            return ok;
        }

        public static bool ValidateLession(JLession jl, out string err2)
        {
            //throw new NotImplementedException();
            bool ok = true;
            err2 = "";
            return ok;
        }

        public static bool ValidateSNA(JSubjectNotAt js, int scheduleInListId, out string err)
        {
            //  throw new NotImplementedException();
            bool ok = true;
            err = "";
            List<Day> lstDay = DataBase.GetAllDay(scheduleInListId);
            var q1 = from q in lstDay
                     where q.DayID == js.DayID
                     select q;
            if (q1.Count() == 0)
            {
                ok = false;
                err += "Ngày học k0 tồn tại, ";
            }
            List<Session> lstSes = DataBase.GetAllSession(scheduleInListId);
            var q2 = from q in lstSes
                     where q.SessionID == js.SessionID
                     select q;
            if (q2.Count() == 0)
            {
                ok = false;
                err += "Buổi học không tồn tại trong thời khóa biểu, ";
            }

            List<Lession> lstLes = DataBase.GetAllLession(scheduleInListId);
            var q3 = from q in lstLes
                     where q.LessionID == js.LessionID
                     select q;
            if (q3.Count() == 0)
            {
                ok = false;
                err += "Tiết học không tồn tại trong thời khóa biểu, ";
            }
            List<Subject> lstSub = DataBase.GetAllSubject(scheduleInListId);
            var q4 = from q in lstSub
                     where q.SubjectID == js.SubjectID
                     select q;
            if (q4.Count() == 0)
            {
                ok = false;
                err += "Môn học không tồn tại trong thời khóa biểu, ";
            }
            return ok;
        }

        public static bool ValidateFTS(JFixTeacherSession jf)
        {
            //throw new NotImplementedException();
            bool ok = true;
            if (DataBase.CheckTeacher(jf.TeacherID) && DataBase.CheckDay(jf.DayID) && DataBase.CheckSession(jf.SessionID))
            {
                return ok;
            }
            else
            {
                return false;
            }
        }
        public static bool ValidateProgram(JProgram jp)
        {
            bool ok = true;
            if (jp.ProgramName.Trim().Length == 0)
            {
                ok = false;
            }
            return ok;
        }
        public static bool ValidateProgramDetail(JProgramDetail jpd)
        {
            bool ok = true;
            ok = DataBase.CheckSubject(jpd.SubjectID);
            if (jpd.NumLession <= 0)
            {
                ok = false;
            }
            return ok;
        }
        public static bool ValidateGroup(JGroup jg)
        {
            bool ok = true;
            //ok=DataBase.Che
            ok = DataBase.CheckSession(jg.SessionID);
            if (ok)
            {
                ok = DataBase.CheckProgram(jg.ProgramID);
            }
            if (ok)
            {
                if (jg.GroupName.Trim().Length == 0)
                {
                    ok = false;
                }
            }
            return ok;
        }
        public static bool ValidateNews(New n,out string er)
        {
            bool ok = true;
            string err = "";
            if (n.Title.Trim().Length == 0)
            {
                ok = false;
                err += "Bạn chưa nhập tiêu đề,";
            }

            if (n.Sumary.Trim().Length == 0)
            {
                ok = false;
                err += "Bạn chưa nhập phần tóm tắt,";
            }
            if(n.NewsContent.Trim().Length==0)
            {
                ok = false;
                err += "Bạn chưa nhập nội dung.";
            }
            er = err;
            return ok;

        }
        public static bool ValidateFSL(JFixSubjectSessionLession jfsl)
        {
            bool ok = true;
            ok = DataBase.CheckGroup(jfsl.GroupID);
            if (ok)
            {
                ok = DataBase.CheckSubject(jfsl.SubjectID);
            }
            if (ok)
            {
                ok = DataBase.CheckDay(jfsl.DayID);
            }
            if (ok)
            {
                ok = DataBase.CheckLession(jfsl.LessionID);

            }
            return ok;
        }
        public static bool ValidateClass(JClass jclass)
        {
            bool ok = true;
            ok = DataBase.CheckGroup(jclass.GroupID);
            if (ok)
            {
                ok = DataBase.CheckTeacher(jclass.TeacherID);
            }
            if (ok)
            {
                ok = jclass.ClassName.Trim().Length > 0;
            }
            if (ok)
            {
                ok = jclass.ClassSize > 0;
            }
            return ok;
        }
        public static bool ValidateFCST(JFixTeacherClassSubject jf)
        {
            bool ok = true;
            ok = DataBase.CheckClass(jf.ClassID);
            if (ok)
            {
                ok = DataBase.CheckSubject(jf.SubjectID);
            }
            if (ok)
            {
                ok = DataBase.CheckTeacher(jf.TeacherID);
            }
            return ok;
        }

    }
}
